package com.springapi.utils;

import cn.hutool.http.HttpUtil;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.NodeList;
import java.io.ByteArrayInputStream;
import java.io.UnsupportedEncodingException;
import java.net.URLEncoder;

public class Sendsms {
    // 短信接口的基础 URL
    private static final String SMS_URL = "http://47.106.229.82:8888/sms.aspx";
    // 用户 ID
    private static final String USER_ID = "17243";
    // 密码
    private static final String PASSWORD = "123456";

    /**
     * 发送短信的方法
     * @param mobile 手机号
     * @param content 短信内容
     * @return 接口返回的 message 内容
     */
    public static String doSendsms(String mobile, String content) {
        try {
            // 对短信内容进行 UTF-8 编码
            String encodedContent = URLEncoder.encode(content, "UTF-8");
            // 构建请求参数
            String params = "action=send&userid=" + USER_ID + "&account=" + "万家驿站" + "&password=" + PASSWORD +
                    "&mobile=" + mobile + "&content=" + encodedContent + "&sendTime=&extno=";
            // 拼接完整的请求 URL
            String fullUrl = SMS_URL + "?" + params;
            // 使用 Hutool 的 HttpUtil 发送 GET 请求
            String response = HttpUtil.get(fullUrl);

            // 创建 DocumentBuilderFactory 实例
            DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
            // 创建 DocumentBuilder 实例
            DocumentBuilder builder = factory.newDocumentBuilder();
            // 将响应字符串转换为输入流
            ByteArrayInputStream input = new ByteArrayInputStream(response.getBytes("UTF-8"));
            // 解析输入流得到 Document 对象
            Document doc = builder.parse(input);
            // 获取根元素
            Element root = doc.getDocumentElement();
            // 获取所有名为 "message" 的元素
            NodeList messageList = root.getElementsByTagName("message");
            if (messageList.getLength() > 0) {
                // 获取第一个 "message" 元素
                Element messageElement = (Element) messageList.item(0);
                // 返回 "message" 元素的文本内容
                return messageElement.getTextContent();
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
        return null;
    }

    public static void main(String[] args) {
        Sendsms sendsms = new Sendsms();
        String mobile = "15290843302";
        String content = "【消息中心】取货码17-4-22-25，您有圆通快递包裹，已到岗周社区党群服务中心对面妈妈驿站。";
        // 调用 doSendsms 方法发送短信并获取返回的 message 内容
        String message = sendsms.doSendsms(mobile, content);
        System.out.println("接口返回的 message 内容: " + message);
    }
}